package com.wiznbiz.okagent;

import java.util.Locale;
import com.wiznbiz.util.AndroidUtil;

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends BaseActivity implements View.OnClickListener{
	private final String TAG = "<<<MainActivity>>>";
	
	/**
	 * 최초 back 버튼 클릭시 2초후 메세지를 받는 Handler 객체<br><br>
	 * 
	 * 메세지를 받을 경우 finishFlag를 false로 셋팅
	 * 
	 */
	private Handler finishHandler;
	
	/**
	 * back 버튼 클릭시 이 플래그값에 따라 어플 종료 또는 Toast 메세지 출력후 finishHandler에게 메세지 전송<br><br>
	 * 
	 * true : 어플종료<br>
	 * false : Toast 메세지 출력후 finishHandler에게 메세지 전송<br>
	 */
	private boolean finishFlag;	
	
	@Override
	protected void onCreate(Bundle savedInstanceState){
		Log.d(TAG, "onCreate..........");
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main_activity);
		
		finishHandler = new Handler(new FinishHandlerCallback());
		
	}
	
	@Override
	public void onResume(){
		Log.d(TAG, "onResume......");
		super.onResume();
		setContentView(R.layout.main_activity);
	}
	
	
	@Override
	public void onBackPressed(){
		if(!finishFlag){
			Toast.makeText(this, R.string.application_finish_msg, Toast.LENGTH_SHORT).show();
			finishFlag = true;
			
			//2초후 핸들러에게 메세지 전달
			finishHandler.sendEmptyMessageDelayed(0, 1000*2);
		}else{
			super.onBackPressed();
			finish();
			android.os.Process.killProcess(android.os.Process.myPid());
			
		}
	}
	
	@Override
	public void onClick(View view) {
		switch(view.getId()){
			case R.id.btn_eng:
				AndroidUtil.setLocale(this.getBaseContext(), Locale.ENGLISH.getLanguage());
				break;
			case R.id.btn_kor:
				AndroidUtil.setLocale(this.getBaseContext(), Locale.KOREAN.getLanguage());
				break;
			case R.id.btn_cha:
				AndroidUtil.setLocale(this.getBaseContext(), Locale.CHINESE.getLanguage());
				break;
		}
		onResume();
	}	
	
	/**
	 * 메모리 릭 방지을 위해서 구현한 Handler.Callback 클래스
	 * 
	 * @author Administrator
	 *
	 */
	private class FinishHandlerCallback implements Handler.Callback{
		@Override
		public boolean handleMessage(Message msg) {
			if(msg.what == 0){
				finishFlag = false;
			}			
			return true;
		}
		
	}


	
}
